package ar.edu.unju.fi.model.dao.impl;

import java.util.ArrayList;
import java.util.List;

import org.hibernate.Criteria;
import org.hibernate.criterion.Restrictions;

import ar.edu.unju.fi.hibernate.base.HibernateBase;
import ar.edu.unju.fi.model.dao.DetallePedidoDAO;
import ar.edu.unju.fi.model.domain.DetallePedido;
import ar.edu.unju.fi.model.domain.Pedido;
import ar.edu.unju.fi.model.domain.Producto;
import ar.edu.unju.fi.model.domain.Usuario;

public class DetallePedidoDAOImpl extends HibernateBase implements DetallePedidoDAO {

	@Override
	public List<DetallePedido> getAll(long id) {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public List<DetallePedido> getAll() {
		
		Criteria criteria = getSession().createCriteria(DetallePedido.class);
		return criteria.list();
	}

	@Override
	public DetallePedido validateCode(long id) {
		Criteria criteria = getSession().createCriteria(DetallePedido.class);
		criteria.add(Restrictions.eq("detalle_pedido_id",id));
		return (DetallePedido) criteria.uniqueResult();
	}

	@Override
	public void save(DetallePedido detalle) {

		getSession().beginTransaction();
        getSession().save(detalle);
        getSession().getTransaction().commit();
		
	}

	@Override
	public void update(DetallePedido detalle) {
		getSession().beginTransaction();
		getSession().update(detalle);
		getSession().getTransaction().commit();
		
	}

	@Override
	public List<Producto> getProducto(List<DetallePedido> detalles) {
		List<Producto>	lista = new ArrayList<Producto>();
		
		for (DetallePedido d : detalles) {
			
			Producto p = (Producto) getSession().get(Producto.class, d.getCodigo())	;	
			lista.add(p);
			
		}
		
		return  lista;
	}

	@Override
	public List<DetallePedido> getAllDetalle(Integer pedidoId) {
		Criteria criteria = getSession().createCriteria(DetallePedido .class);
        if(pedidoId != null)
            criteria.add(Restrictions.ilike("pedido_id", pedidoId));
        return criteria.list();
		
		
		
	
	}

}
